home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 21 / Cream of the Crop 21 (Terry Blount) (October 1996).iso / program / nwlib15.zip / DEMO.ZIP / MAIN.PAS < prev    next >
Pascal/Delphi Source File  |  1996-06-08  |  14KB  |  489 lines

  1. unit Main;
  2.  
  3. interface
  4.  
  5. uses
  6.     SysUtils, 
  7.     WinTypes,   
  8.     WinProcs, 
  9.     Messages, 
  10.     Classes,         
  11.     Graphics, 
  12.     Controls,
  13.     Forms,     
  14.     Dialogs, 
  15.     StdCtrls,
  16.     ExtCtrls,
  17.     Menus,
  18.     Nwlib,
  19.     Nwtools,
  20.     NWServer,
  21.     NwProp;
  22.  
  23. type
  24.   TwinMain = class(TForm)
  25.     Panel1: TPanel;
  26.     foot1: TLabel;
  27.     Label1: TLabel;
  28.     Label3: TLabel;
  29.     Label4: TLabel;
  30.     Label5: TLabel;
  31.     everyone: TListBox;
  32.     Header1: THeader;
  33.     groups: TListBox;
  34.     Header2: THeader;
  35.     Panel2: TPanel;
  36.     bExit: TButton;
  37.     userid: TLabel;
  38.     objectid: TLabel;
  39.     netname: TLabel;
  40.     server: TLabel;
  41.     Bevel1: TBevel;
  42.     username: TLabel;
  43.     loggedin: TLabel;
  44.     serverdate: TLabel;
  45.     label6: TLabel;
  46.     bEnable: TButton;
  47.     bDisable: TButton;
  48.     Label2: TLabel;
  49.     netDrive: TLabel;
  50.     Panel3: TPanel;
  51.     foot2: TLabel;
  52.     serverlist: TListBox;
  53.     servertext: TEdit;
  54.     bLogout: TButton;
  55.     mapList: TListBox;
  56.     Header3: THeader;
  57.     volumes: TListBox;
  58.     everyonePopup: TPopupMenu;
  59.     ChangePassword1: TMenuItem;
  60.     SendLineMessage1: TMenuItem;
  61.     NWLib1: TNWLib;
  62.     NWServer1: TNWServer;
  63.     NWTools1: TNWTools;
  64.     NWProp1: TNWProp;
  65.     bSemaphore: TButton;
  66.     bRights: TButton;
  67.     bProp: TButton;
  68.     bFiles: TButton;
  69.     bStats: TButton;
  70.     isManager: TCheckBox;
  71.     isSuper: TCheckBox;
  72.     isConsole: TCheckBox;
  73.     bMap: TButton;
  74.     bCapture: TButton;
  75.     bNDS: TButton;
  76.     canLogin: TCheckBox;
  77.     mapPopup: TPopupMenu;
  78.     mapDelMenu: TMenuItem;
  79.     mapInfoMenu: TMenuItem;
  80.     procedure FormShow(Sender: TObject);
  81.     procedure everyoneDblClick(Sender: TObject);
  82.     procedure groupsDblClick(Sender: TObject);
  83.     procedure bExitClick(Sender: TObject);
  84.     procedure bMapClick(Sender: TObject);
  85.     procedure bEnableClick(Sender: TObject);
  86.     procedure bDisableClick(Sender: TObject);
  87.     procedure serverlistDblClick(Sender: TObject);
  88.     procedure bLogoutClick(Sender: TObject);
  89.     procedure bCaptureClick(Sender: TObject);
  90.     procedure mapListDblClick(Sender: TObject);
  91.     procedure bStatsClick(Sender: TObject);
  92.     procedure bFilesClick(Sender: TObject);
  93.     procedure bRightsClick(Sender: TObject);
  94.     procedure ChangePassword1Click(Sender: TObject);
  95.     procedure SendLineMessage1Click(Sender: TObject);
  96.     procedure bNDSClick(Sender: TObject);
  97.     procedure bPropClick(Sender: TObject);
  98.     procedure bSemaphoreClick(Sender: TObject);
  99.     procedure mapInfoMenuClick(Sender: TObject);
  100.     procedure mapDelMenuClick(Sender: TObject);
  101.   private
  102.     { Private declarations }
  103.   public
  104.     { Public declarations }
  105.  
  106.   end;
  107.  
  108. var
  109.   winMain: TwinMain;
  110.  
  111. implementation
  112.  
  113. {$R *.DFM}
  114.  
  115. uses
  116.   NDS,
  117.   Stats,
  118.   userStat,
  119.   PrintCap,
  120.   semaphr,
  121.   Prop,
  122.   files;
  123.  
  124. var
  125.   connectInfo : TNWConnectInfo ;
  126.  
  127. procedure TwinMain.FormShow(Sender: TObject);
  128.   begin
  129.      if not NWInit then
  130.        AlertBox('Netware Shells Are Not Loaded;;Inconsistent Results Are Likely') ;
  131.  
  132.      { Show Footer }
  133.      foot1.caption := WhoAmi(0) + '  (' +
  134.                       intToStr(GetConnectID(GetPrimaryServerID)) + ')';
  135.      foot2.caption := FormDate(date) ;
  136.  
  137.      { Various Labels }
  138.      userid.caption     := WhoAmI(0) ;
  139.      objectid.caption   := GetObjID(0,userid.caption,nw_user) ;
  140.      server.caption     := GetServerName(GetPrimaryServerID) ;
  141.      serverdate.caption := FormatDateTime('mm/dd/yyyy',GetServerDate(GetPrimaryServerID)) + ' @ ' +
  142.                            FormatDateTime('hh:nn am/pm',GetServerTime(GetPrimaryServerID));
  143.      netname.caption    := FullName(0,userid.caption) ;
  144.      netdrive.caption   := GetFirstNetDrive + ':' + '     Next Free: ' +
  145.                            GetNextNetDrive + ':' ;
  146.      { checkboxes }
  147.      isSuper.checked    := SecureEquiv(0,userid.caption,'SUPERVISOR') ;
  148.      isConsole.checked  := IsConsoleOperator(GetPrimaryServerID);
  149.      isManager.checked  := IsNWManager(GetPrimaryServerID) ;
  150.      canLogin.checked   := serverLoginOK(0) ;
  151.  
  152.      {general connection information}
  153.  
  154.      { Popup Menu Disable ChangePW Option if not SUPERVISOR }
  155.      if not isSuper.checked then
  156.        everyonePopup.items[0].enabled := false ;
  157.  
  158.      { Disable 'Disable Login' Button }
  159.      if not IsConsoleOperator(GetPrimaryServerID) then
  160.        bDisable.enabled := false ;
  161.  
  162.      { Test the Login (Attach) Function - note intended typo to prevent lockout}
  163.      if NWLogin('fs1','FSUPERVISOR','badmofo',nw_user) then
  164.        okBox('SUPERVISOR Login Successful!') ;
  165.  
  166.      { Password Check }
  167.      if NWPassCheck(GetPrimaryServerID,'FSUPERVISOR','ZOOMY') then
  168.        AlertBox('Wow!  I Guessed Supervisor''s Password!!') ;
  169.  
  170.      { Build EVERYONE List }
  171.      everyone.items.addStrings(GetMemberList(
  172.                                GetPrimaryServerID,'EVERYONE',True )) ;
  173.      { Build GroupList }
  174.      groups.items.addStrings(GetBinderyList(
  175.                              GetPrimaryServerID,
  176.                              nw_group)) ;
  177.      { Build ServerList }
  178.      serverList.items.addStrings(SList) ;
  179.  
  180.      { Network Volume Listing }
  181.      volumes.items.addStrings(GetVolumes(GetPrimaryServerID)) ;
  182.  
  183.      { Build Drive Map List }
  184.      mapList.items.addStrings(mapShow) ;
  185.  
  186.   end;
  187.  
  188. procedure TwinMain.everyoneDblClick(Sender: TObject);
  189.   var
  190.     ctemp : string ;
  191.   begin
  192.     ctemp := everyone.items[everyone.itemindex] ;
  193.     if IsLoggedIn(0,ctemp) then
  194.       begin
  195.         { Show Stats Window }
  196.         try
  197.           Application.CreateForm(TWinUserStats,winUserStats) ;
  198.           winUserStats.netname.text := ctemp ;
  199.           winUserStats.showModal ;
  200.           { Send Line Message to Self ... because we can.}
  201.           if ctemp = WhoAmi(0) then
  202.             begin
  203.               if not SendLineMessage(0,ctemp,'Hey! Watch Where You''re Clicking That Mouse!') then
  204.                 AlertBox('Have You Disabled Broadcasts?');
  205.             end;
  206.         finally
  207.           winUserStats.free ;
  208.         end;
  209.       end
  210.     else
  211.       begin
  212.         username.caption := FullName(0,ctemp)  ;
  213.         loggedin.Caption := 'Is NOT Logged In!' ;
  214.       end;
  215.   end;
  216.  
  217. procedure TwinMain.groupsDblClick(Sender: TObject);
  218.   begin
  219.     username.caption := groups.items[groups.itemindex] ;
  220.     loggedin.caption := GetObjID(0,groups.items[groups.itemindex],nw_group) ;
  221.     { Get Members }
  222.     header1.sections[0] := lowerCase(username.caption) ;
  223.     everyone.clear ;
  224.     everyone.items.addstrings(GetMemberList(getPrimaryServerID,username.caption,true)) ;
  225.   end;
  226.  
  227. procedure TwinMain.bExitClick(Sender: TObject);
  228.   begin
  229.     close ;
  230.   end;
  231.  
  232. procedure TwinMain.bMapClick(Sender: TObject);
  233.   var
  234.     chtemp    : char ;
  235.     ctemp     : string ;
  236.   begin
  237.     chtemp := getNextNetDrive ;
  238.     if yesNoBox('Mapping Drive ' + chtemp +  ': to;' +
  239.                 getServerName(getPrimaryServerID) + '/SYS:\;;' +
  240.                 'OK With You?') then
  241.       begin
  242.         if map(chtemp,
  243.                getServerName(getPrimaryServerID) + '/sys:public') then
  244.           begin
  245.             mapList.clear ;
  246.             mapList.items.addStrings(mapShow) ;
  247.             netdrive.caption := getFirstNetDrive + ':' +
  248.                                 '     Next Free: ' +
  249.                                 getNextNetDrive + ':' ;
  250.             OKBox(chtemp + ';Drive Map Created Successfully!')
  251.           end
  252.         else
  253.           alertBox('Error Mapping Drive ' + chtemp + ':') ;
  254.       end;
  255.   end;
  256.  
  257. procedure TwinMain.bEnableClick(Sender: TObject);
  258.   begin
  259.     if EnableLogins(GetPrimaryServerID) then
  260.       begin
  261.         bEnable.enabled := false ;
  262.         bDisable.enabled := True ;
  263.         canLogin.checked   := serverLoginOK(0) ;
  264.       end
  265.     else
  266.       AlertBox('You Must Have Console Privileges to Enable Logins!') ;
  267.   end;
  268.  
  269. procedure TwinMain.bDisableClick(Sender: TObject);
  270.   begin
  271.     if YesNoBox('Disabling Logins Can be Dangerous!;;Continue?') then
  272.       begin
  273.         if DisableLogins(GetPrimaryServerID) then 
  274.           begin
  275.             bEnable.enabled := True ;
  276.             bDisable.enabled := False